In computing, a file system is configured to manage access to data stored in a storage system. In some instances, portions of the data can be corrupt or otherwise invalid. If these corruptions are not detected and repaired, the storage system is at risk of irreparable data loss. For example, moving corrupt pieces of data to different storage locations on resilient media can cause the corrupt data to be propagated throughout the storage system, with no way of repairing the corrupt data or otherwise recovering the valid data from different copies of the data.
Existing file systems offer some data integrity tools. However, in some scenarios where the presence of corrupt data in a storage system is to be detected, the use of these existing data integrity tools is computationally intensive and can reduce throughput of the system. Users of existing file systems must therefore choose between risking propagation of corrupt data or using a computationally intensive corruption-detection approach that is not scalable because computational overhead worsens as data storage capacity increases.